package Testes;

import static org.junit.Assert.*;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.ListResourceBundle;

import org.junit.Test;

import DAO.AtividadeDaoImplArquivo;
import Pojo.Aluno;
import Pojo.Atividade;
import Pojo.Turma;
import Pojo.Nota;

public class AtividadeDaoImplArquivoTest {
	
	@Test
	public void insercaoNaListaDaCerto() throws Exception{
		try {  
    		String str_date="21/05/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Turma turma = new Turma(5, 2013,2,"dcomp","08:00-09:40",10,false);
	    	List<Nota> listaNotas = new ArrayList<Nota>();
	    	Atividade atividade = new Atividade(3,"Primeira avaliação de POO","Prova",cal,20,turma,listaNotas);
			assertEquals(true, new AtividadeDaoImplArquivo().adicionarAtividade(atividade));
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	} 	    
	}
	
	@Test
	public void insercaoNaListaDuplicadoDaErrado() throws Exception{
		try {  
    		String str_date="21/05/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Atividade atividade = new Atividade(2,"Teste surpresa de POO","Prova",cal,10);
	    	AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
	    	atividadeDao.adicionarAtividade(atividade);
	    	assertEquals(false, atividadeDao.adicionarAtividade(atividade));
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	} 	    
	}
	
	@Test
	public void insercaoNaListaMesmoIdDaErrado() throws Exception{
		try {  
    		String str_date="21/05/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Atividade atividade = new Atividade(3,"Primeira avaliação de POO","Prova",cal,20);
			AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
			atividadeDao.adicionarAtividade(atividade);
			atividade = new Atividade(3,"Segunda avaliação de POO","Prova",cal,30);
			assertEquals(false, atividadeDao.adicionarAtividade(atividade));
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	} 	    
	}
	
	@Test
	public void remocaoNaListaDaCerto() throws Exception{
		try {  
    		String str_date="10/07/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Atividade atividade = new Atividade(3,"Lista de exercícios","Exercício",cal,5);
			AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
			atividadeDao.adicionarAtividade(atividade);
			assertEquals(true,atividadeDao.removerAtividade(atividade));
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	} 	    
	}

	@Test
	public void remocaoDeAtividadeQueNaoExisteDaErrado() throws Exception{
		try {  
    		String str_date="10/07/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Atividade atividade = new Atividade(7,"Lista de exercícios","Exercício",cal,5);
			AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
			assertEquals(false,atividadeDao.removerAtividade(atividade));
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	} 	    
	}
	
	@Test
	public void procurarAtividadePorNomeNaListaDaCerto() throws Exception{
		try {  
    		String str_date="10/07/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Turma turma = new Turma(5, 2013,2,"dcomp","08:00-09:40",10,false);
	    	List<Nota> listaNotas = new ArrayList<Nota>();
	    	Atividade atividade = new Atividade(7,"Lista de exercícios","Exercício",cal,5,turma,listaNotas);
			AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
			atividadeDao.adicionarAtividade(atividade);
			List<Atividade> lista = atividadeDao.procurarPorNome("Lista de exercícios");
			assertNotSame(0, lista.size());
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	}
	}
	
	@Test
	public void procurarAtividadePorNomeNaListaDaErrado() throws Exception{
		try {  
    		String str_date="10/07/2013";
    		DateFormat formatter ; 
    		Date date ; 
	    	formatter = new SimpleDateFormat("dd/MM/yyyy");
	    	date = (Date)formatter.parse(str_date); 
	    	Calendar cal=Calendar.getInstance();
	    	cal.setTime(date);
	    	Atividade atividade = new Atividade(7,"Lista de exercícios","Exercício",cal,5);
			AtividadeDaoImplArquivo atividadeDao = new AtividadeDaoImplArquivo();
			atividadeDao.adicionarAtividade(atividade);
			List<Atividade> lista = atividadeDao.procurarPorNome("Prova");
			assertEquals(0, lista.size());
    	} catch (ParseException e){
    		System.out.println("Exception :"+e);  
    	}
	}
}
